/**
 * 时间格式化工具函数
 */

/**
 * 格式化日期时间
 * @param {string|Date} time 日期时间字符串或Date对象
 * @param {string} format 格式字符串，默认为'YYYY-MM-DD HH:mm:ss'
 * @returns {string} 格式化后的日期时间字符串
 */
export function formatDateTime(time, format = 'YYYY-MM-DD HH:mm:ss') {
  if (!time) return '-';
  
  let date;
  if (typeof time === 'string') {
    // 处理带有Z的UTC时间
    if (time.indexOf('Z') !== -1) {
      date = new Date(time);
    } else if (time.indexOf('T') !== -1 && time.indexOf('+') === -1) {
      // 处理ISO格式但不带时区的时间
      date = new Date(time + 'Z');
    } else {
      date = new Date(time);
    }
  } else if (time instanceof Date) {
    date = time;
  } else {
    return '-';
  }
  
  if (isNaN(date.getTime())) {
    return '-';
  }
  
  const year = date.getFullYear();
  const month = date.getMonth() + 1;
  const day = date.getDate();
  const hours = date.getHours();
  const minutes = date.getMinutes();
  const seconds = date.getSeconds();
  
  const pad = (num) => (num < 10 ? `0${num}` : num);
  
  return format
    .replace('YYYY', year)
    .replace('MM', pad(month))
    .replace('DD', pad(day))
    .replace('HH', pad(hours))
    .replace('mm', pad(minutes))
    .replace('ss', pad(seconds));
}

/**
 * 格式化为相对时间（例如：刚刚、5分钟前、1小时前等）
 * @param {string|Date} time 日期时间字符串或Date对象
 * @returns {string} 相对时间字符串
 */
export function formatRelativeTime(time) {
  if (!time) return '-';
  
  let date;
  if (typeof time === 'string') {
    date = new Date(time);
  } else if (time instanceof Date) {
    date = time;
  } else {
    return '-';
  }
  
  if (isNaN(date.getTime())) {
    return '-';
  }
  
  const now = new Date();
  const diff = now.getTime() - date.getTime();
  
  // 转换为秒
  const seconds = Math.floor(diff / 1000);
  
  if (seconds < 60) {
    return '刚刚';
  }
  
  // 转换为分钟
  const minutes = Math.floor(seconds / 60);
  if (minutes < 60) {
    return `${minutes}分钟前`;
  }
  
  // 转换为小时
  const hours = Math.floor(minutes / 60);
  if (hours < 24) {
    return `${hours}小时前`;
  }
  
  // 转换为天
  const days = Math.floor(hours / 24);
  if (days < 30) {
    return `${days}天前`;
  }
  
  // 转换为月
  const months = Math.floor(days / 30);
  if (months < 12) {
    return `${months}个月前`;
  }
  
  // 转换为年
  const years = Math.floor(months / 12);
  return `${years}年前`;
} 